/**
 * 类型操作
 * 1、获取数据的类型
 * 2、捕获数据的类型
 */

{
  let str1 = 'kaikeba';

  // 声明的是变量
  let t = typeof str1;

  // type 声明的是类型名称
  type myType = typeof str1;

  let a = t;
  let b: myType = t;


  let p1 = {
    name: 'kaikeba',
    age: 35
  }
  function getPersonVal(k: keyof typeof p1) {
    return p1[k];
  }

  interface Person {
    name: string,
    age: number
  }
  type personKeys = keyof Person;
  type newPerson = {
    [k in personKeys]: string
  }
}